'\" te
.\" Copyright (c) 2003, Sun Microsystems, Inc.
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH CPC_VERSION 3CPC "Mar 28, 2005"
.SH NAME
cpc_version \- coordinate CPC library and application versions
.SH SYNOPSIS
.LP
.nf
cc [ \fIflag\fR... ] \fIfile\fR... \(milcpc [ \fIlibrary\fR... ]
#include <libcpc.h>

\fBuint_t\fR \fBcpc_version\fR(\fBuint_t\fR \fIversion\fR);
.fi

.SH DESCRIPTION
.sp
.LP
The \fBcpc_version()\fR function takes an interface version as an argument and
returns an interface version as a result.  Usually, the argument will be the
value of \fBCPC_VER_CURRENT\fR bound to the application when it was compiled.
.SH RETURN VALUES
.sp
.LP
If the version requested is still supported by the implementation,
\fBcpc_version()\fR returns the requested version number and the application
can use the facilities of the library on that platform.  If the implementation
cannot support the version needed by the application, \fBcpc_version()\fR
returns \fBCPC_VER_NONE\fR, indicating that the application will at least need
to be recompiled to operate correctly on the new platform, and may require
further changes.
.sp
.LP
If \fIversion\fR is \fBCPC_VER_NONE\fR, \fBcpc_version()\fR returns the most
current version of the library.
.SH EXAMPLES
.LP
\fBExample 1 \fR Protect an application from using an incompatible library.
.sp
.LP
The following lines of code protect an application from using an incompatible
library:

.sp
.in +2
.nf
if (cpc_version(CPC_VER_CURRENT) == CPC_VER_NONE) {
        /* version mismatch - library cannot translate */
        exit(1);
}
.fi
.in -2

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(7) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Evolving
_
MT-Level	Unsafe
.TE

.SH SEE ALSO
.sp
.LP
.BR cpc (3CPC),
.BR cpc_open (3CPC),
.BR libcpc (3LIB),
.BR attributes (7)
.SH NOTES
.sp
.LP
The \fBcpc_version()\fR function exists for binary compatibility only. Source
containing this function will not compile. This function is obsolete and might
be removed in a future release. Applications should use \fBcpc_open\fR(3CPC)
instead.
.sp
.LP
The version number is used only to express incompatible semantic changes in the
performance counter interfaces on the given platform within a single
instruction set architecture, for example, when a new set of performance
counter registers are added to  an existing processor family that cannot be
specified in the existing \fBcpc_event_t\fR data structure.
